#ifndef __VERNON_MAX7219_H__
#define __VERNON_MAX7219_H__

#include "max7219_transfer.h"

typedef struct 
{
    // must be assign for public
    uint8_t mosi_pin;
    uint8_t cs_pin;
    uint8_t clk_pin;
    uint8_t cascade_size;
    spi_host_device_t used_spi_id;
    bool is_anode;
    bool left_source; // 表示信号源的位置，正常显示情况下，如果信号源从右接入，则不需要处理，直接串行输出即可。如果从左进入，则需要将对应芯片的缓存区数据分别左右交换（因为uint8_t永远是正向的）
    void * matrix_buffer;

    // Private
    max7219_tranfer vernon_transfer;
}vernon_max7219_t;

esp_err_t vernon_max7219_init(vernon_max7219_t * handle);
esp_err_t vernon_max7219_draw_buffer(vernon_max7219_t *handle, uint8_t row_pos, uint8_t coloum_pos, uint8_t number);
esp_err_t vernon_max7219_send_buffer(vernon_max7219_t *handle);
esp_err_t vernon_max7219_set_brightness(vernon_max7219_t *handle, uint8_t value);

#endif